from enum import Enum

class TokenType(Enum): 
    # ()
    LEFT_PAREN = 0
    RIGHT_PAREN = 1

    # []
    LEFT_BRACKET = 2
    RIGHT_BRACKET = 3

    # , . ; :
    COMMA = 4
    DOT = 5
    SEMICOLON = 6
    COLON = 7

    # 
    IDENTIFIER = 8
    INTEGER = 9,
    
    # Keywords
    MODULE = 10,
    ENDMODULE = 11,
    WIRE = 12,
    REG = 13,
    INPUT = 14,
    OUTPUT = 15,

    EOF = 16

class Token():
    def __init__(self, token_type : TokenType, literal : object = None) -> None:
        self.token_type = token_type
        self.literal : object = literal

    def __repr__(self) -> str:
        return f'[type: {self.token_type}, literal: {self.literal}]'